#ifndef _SETTING_GUI_H_
#define _SETTING_GUI_H_

#include "lvgl/lvgl.h"

typedef struct 
{
    char essid[128];      //帐号
    char psk[128];        //密码
    char address[32];        //wifi ap物理地址
    char freq[32];           //频段 
    bool encryption_key;        //是否具有密钥
    char bit_rates[64];      //比特率Mbit/s
    int level;              //信号强度，最大100%
    int id;
    bool is_connected;      //是否是已连接的wifi
}WifiInfo;

typedef struct
{
    char essid[128];        //已连接的wifi帐号
    char address[32];       //网卡物理地址
    char ip_addr[32];        //内网ip地址
    int rx_packets;         //已发送数据包个数
    int tx_packets;         //已接收数据包个数
    int rx_bytes;               //已接收字节数
    int tx_bytes;               //已发送字节数
}NetInfo;

typedef void (*exit_cb_t)(lv_event_t *);
typedef int (*set_brightness_t)(int);
typedef int (*get_brightness_t)(void);
typedef int (*set_volume_t)(int);
typedef int (*get_volume_t)(void);
typedef void (*poweroff_t)(void);
typedef void (*reboot_t)(void);
typedef void (*wlan_scan_t)(void);
typedef void (*connect_ap_t)(int, const char *, const char *);        //参数分别是wifi id，若id为-1则使用wifi名称和密码
typedef void (*disconnect_ap_t)(int);                       //参数为wifi id
typedef void (*change_pwd_t)(int, const char*);         //参数为wifi id和新密码

typedef struct _gui_opt
{
    exit_cb_t exit_cb;          //退出进程回调函数
    set_brightness_t set_brightness;        //设置背光回调函数
    get_brightness_t get_brightness;        //获取背光回调函数
    set_volume_t set_volume;                    //设置音量回调函数
    get_volume_t get_volume;                    //获取音量回调函数
    wlan_scan_t wlan_scan;              //扫描WIFI
    connect_ap_t connect_ap;                //连接wifi回调函数
    disconnect_ap_t disconnect_ap;          //断开wifi连接回调函数
    change_pwd_t change_pwd;            //修改已保存wifi密码回调函数
    poweroff_t poweroff;                        //关机回调函数
    reboot_t reboot;                                    //重启回调函数
}gui_opt_t;


#ifdef __cplusplus
extern "C" {
#endif


void setting_gui_init(gui_opt_t *opts);
void setting_gui_update_net_info(NetInfo *info);
void setting_gui_list_add_wifi(WifiInfo *info);
void setting_gui_connecting_cont_create(void);
void setting_gui_get_ip_set_status(bool status);
void setting_gui_connect_set_status(bool status);
void setting_gui_connect_over(bool status);
void setting_gui_release(void);


#ifdef __cplusplus
}
#endif



#endif


